#!/usr/bin/python
# -*- coding:utf-8 -*-
# @author  : micah
# @time    :  
# @function: 
# @version :


import time
import asyncio


async def work(x):
    print('运行中', x)
    await asyncio.sleep(x)
    return f'程序的返回结果： {x}'


async def main():
    c_obj_1 = work(1)
    c_obj_2 = work(2)
    c_obj_3 = work(3)

    # 创建一个任务列表
    tasks = [
        # 在列表中创建task对象
        asyncio.create_task(c_obj_1),
        asyncio.create_task(c_obj_2),
        asyncio.create_task(c_obj_3),
    ]

    # 通过gather方法或者wait方法执行任务列表
    result = await asyncio.gather(*tasks)  # gather用于收集其他协程任务返回的结果
    print(result)

    """
    asynci.wait() 即可以获取返回值也可以获取当前其他执行中的任务的状态
    done：已经完成的任务并且携带返回值
    pending[等待]:运行的协程任务的状态
    """
    # dones, pending = await asyncio.wait(tasks)
    # print(dones)
    """
    done所返回的值是一个集合
        在这个集合中有一些对象
        result对象
    """
    # for res in dones:
    #     print(res.result())


now = lambda: time.time()

start = now()
asyncio.run(main())
print(f'Time:{now() - start}')
